home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Grafik / Misc / ImageEnginer / ARexx / Batch / Rotate.ieb < prev    next >
Encoding:
Text File  |  1997-02-02  |  3.4 KB  |  142 lines

  1. /*
  2. ** $VER: Rotate.ieb 1.3, IE Arexx script
  3. ** Image Engineer Batch Processing script
  4. ** Copyright © by Patrik M Nydensten
  5. ** 2/2 1997 Stockholm/Sweden
  6. **
  7. ** Rotate image.
  8. */
  9.  
  10. options results
  11. signal on error
  12.  
  13. parse arg input command
  14. input = upper(strip(input))
  15. address 'IMAGEENGINEER'
  16.  
  17. select  /* Required batch script commands */
  18.   when input = 'INFO' then    return get_info()
  19.   when input = 'CONFIG' then  return get_config(command)
  20.   when input = 'PROCESS' then return process_image(command)
  21.   otherwise do
  22.     'REQUEST' '"Failure in call to batch script!"' '" Quit "'
  23.     return '<ERROR>'
  24.   end
  25. end
  26.  
  27. exit 0
  28.  
  29. /* Required "Get_info" procedure  ------------------------------------ */
  30. /* S = SECONDARY, A = ALPHA, 1 = Single file, 2 = Multiple files       */
  31.  
  32. get_info:
  33.   back = 'OK'
  34. return back
  35.  
  36. /* Required "Get_config" procedure  ---------------------------------- */
  37.  
  38. get_config:
  39.   parse arg '"'command'"'
  40.  
  41.   NewAngle=90
  42.  
  43.   if command ~= '' then parse var command NewAngle '#'CropQ '#'CalcType
  44.  
  45.   'IE_TO_FRONT'
  46.  
  47.   form = 'FORM "Rotate" " OK | Cancel "',
  48.   ' INTEGER,"Angle",-1800,1800,'NewAngle',SLIDER'
  49.  
  50.   if command = '' then do
  51.     form = form||' CHECKBOX,"Crop image to original size?",0',
  52.     ' CYCLE,"Type:","Best|Fast",0'
  53.  
  54.     form
  55.     parse var result ok NewAngle CropQ CalcType .
  56.     if ok = 0 then return '<ERROR>'
  57.  
  58.     if CalcType=0 then CalcType='BEST'
  59.     else CalcType = 'FAST'
  60.   end
  61.   else do
  62.     form
  63.     parse var result ok NewAngle .
  64.     if ok = 0 then return '<ERROR>'
  65.  
  66.     CropQ = 'none'
  67.     CalcType = 'none'
  68.   end
  69.  
  70.   back = NewAngle '#'CropQ '#'CalcType
  71. return back
  72.  
  73. /* Required "Process_image" procedure  ------------------------------- */
  74.  
  75. process_image:
  76.   parse arg '"'src_image'"' '"'dst_image'"' '"'options'"'
  77.   parse var options NewAngle '#'CropQ '#'CalcType .
  78.  
  79.   'OPEN' '"'src_image'"' '24'
  80.   if (RC ~= 0) then do
  81.     'IE_TO_FRONT'
  82.     'REQUEST' '"Failed to load image:' d2c(10)||src_image'"' '" OK "'
  83.     return '<ERROR>'
  84.   end
  85.   else LoadImage = result
  86.  
  87.   do until ((NewAngle < 360)&(NewAngle >= 0))
  88.     if NewAngle > 359 then NewAngle = NewAngle - 360
  89.     if NewAngle < 0 then NewAngle = NewAngle + 360
  90.   end
  91.  
  92.   if CropQ = 1 then do
  93.     'PROJECT_INFO' LoadImage 'WIDTH'
  94.     IW = Result
  95.     'PROJECT_INFO' LoadImage 'HEIGHT'
  96.     IH = Result
  97.   end
  98.  
  99.   'ROTATE' LoadImage NewAngle CalcType
  100.   OutputImage = result
  101.   'CLOSE' LoadImage
  102.  
  103.   if CropQ = 1 then do
  104.     'RESIZE' OutputImage IW IH 'CENTER'
  105.     NewImage = result
  106.     'CLOSE' OutputImage
  107.     OutputImage = NewImage
  108.   end
  109.  
  110.   if getclip('cfg_save_frmt')='' then setclip('cfg_save_frmt','ILBM CmpByteRun1')
  111.   'SAVE_DATA' OutputImage '"'dst_image'"' '"'getclip('cfg_save_frmt')'"'
  112.   if (RC ~= 0) then do
  113.     'IE_TO_FRONT'
  114.     'REQUEST' '"Failed to save image:' d2c(10)||dst_image'"' '" OK "'
  115.     return '<ERROR>'
  116.   end
  117.   'CLOSE' OutputImage
  118.  
  119.   back = 'OK'
  120. return back
  121.  
  122. /* Internal procedures  ---------------------------------------------- */
  123.  
  124. /*******************************************************************/
  125. /* This is where control goes when an error code is returned by IE */
  126. /* It puts up a message saying what happened and on which line     */
  127. /*******************************************************************/
  128.  
  129. error:
  130. if RC=5 then do
  131.     IE_TO_FRONT
  132.     LAST_ERROR
  133.     'REQUEST "'||RESULT||'"'
  134. end
  135. else do
  136.     IE_TO_FRONT
  137.     LAST_ERROR
  138.     'REQUEST "Error detected!!!'||D2C(10)||'Image Engineer error message is as follows'||D2C(10)||result||D2C(10)||'Script failed on line '||SIGL||'"' 'Doh!'
  139. end
  140.  
  141. return '<ERROR>'
  142.